﻿using System;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DataAccess;
using NLog;

namespace QuanLyKhachSan
{
    public partial class FormChucVuCapNhat : XtraForm
    {
        private readonly int _type;
        private readonly ChucVuManager _manager = new ChucVuManager();
        public Chucvu Chucvu = new Chucvu();
        public bool Success { get; set; }
        protected static Logger Logger = LogManager.GetCurrentClassLogger();

        public FormChucVuCapNhat(int type)
        {
            InitializeComponent();
            _type = type;
        }

        public FormChucVuCapNhat(int type,Chucvu cv)
        {
            InitializeComponent();
            _type = type;
            Chucvu = cv;
            LoadDuLieu();
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            LayDuLieu();
            var validator = _manager.Validate(Chucvu);
            if (validator.Valid())
            {
                var action = new ActionResult();
                action = _manager.Them(Chucvu);
                if (action.Sucess())
                {
                    Success = true;
                    Close();
                }
                else
                {
                    Logger.Info(action.Exceptions);
                    XtraMessageBox.Show(action.GetErrorMessage(), "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                Logger.Error(validator.Message);
                XtraMessageBox.Show(validator.ToString(), "Thông báo", MessageBoxButtons.OK);
            }
        }

        private void btnCapnhat_Click(object sender, EventArgs e)
        {
            LayDuLieu();
            var validator = _manager.Validate(Chucvu);
            if (validator.Valid())
            {
                var action = new ActionResult();
                action = _manager.CapNhat(Chucvu);
                if (action.Sucess())
                {
                    Success = true;
                    this.Close();
                }
                else
                {
                    Logger.Info(action.Exceptions);
                    XtraMessageBox.Show(action.GetErrorMessage(), "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                Logger.Error(validator.Message);
                XtraMessageBox.Show(validator.ToString(), "Thông báo", MessageBoxButtons.OK);
            }
        }

        private void LayDuLieu()
        {
            try
            {
                Chucvu.MaCV = txtMaCV.Text;
                Chucvu.TenCV = txtTenCV.Text;
                Chucvu.Mota = txtMota.Text;
                Chucvu.Luong = double.Parse(txtLuongCB.Text);
                Chucvu.Trangthai = txtTrangthai.Text;
            }
            catch 
            {
                Logger.Error("Lỗi khi nhập dữ liệu, xin hay kiểm tra lại thông tin đã nhập");
                XtraMessageBox.Show("Lỗi khi nhập dữ liệu, xin hay kiểm tra lại thông tin đã nhập.","Cảnh báo",MessageBoxButtons.OK,MessageBoxIcon.Warning);
            }
        }

        private void LoadDuLieu()
        {
            try
            {
                txtMaCV.Text = Chucvu.MaCV;
                txtTenCV.Text = Chucvu.TenCV;
                txtMota.Text = Chucvu.Mota;
                txtLuongCB.Text = Chucvu.Luong.ToString();
                txtTrangthai.Text = Chucvu.Trangthai;
            }
            catch
            {
                XtraMessageBox.Show("Lấy dữ liệu xảy ra lỗi", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void FormChucVuCapNhat_Load(object sender, EventArgs e)
        {
            if (_type == 1)
            {
                btnThem.Enabled = false;
                txtMaCV.Enabled = false;
            }
            else
                btnCapnhat.Enabled = false;
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            Close();
        }
    }
}